// 功能: 删除目录树(rd dir1)
void rd()
{
int i,j,t,flag=0;
if(argc != 2)
{
printf("Command delete must have one args. \n");
return ;
}
for(i = 0; i < INODENUM; i++)//查找待删除目录
if((inode_array[i].inum > 0) &&//是否为空
(inode_array[i].iparent == inum_cur) &&
(inode_array[i].type == 'd')&&
(!strcmp(inode_array[i].file_name,argv[1])))
{
int chk=check(i);//检查用户权限
if(chk!=1)
{
printf("This directory is not your !\n");
return ;
}
else j=inode_array[i].inum;
for(t=0;t<INODENUM;t++)
{
if((inode_array[t].inum>0)&&
(inode_array[t].iparent==j)&&
(inode_array[i].type == '-'))
delet(t);//目录下有文件则删除
else if((inode_array[t].inum>0)&&
(inode_array[t].iparent==j)&&
(inode_array[i].type == 'd'))
delet(t);//目录下有空目录则删除
}
if(t == INODENUM)
delet(j);//下层目录为空删除之
}
if(i == INODENUM)
delet(i);//待删除目录为空删除之
return;
}